/*
 * test_ABCD_EX.c
 *
 *  Created on: 2011-11-16
 *      Author: Jesse Meng [pingf0@gmail.com]
 */

#include "OOStd.h"

CLASS(A){
	CLASS_ST(B);
};
static int A_reload(A *THIS,char *name){
	printf("%s\n",__FUNCTION__);
	return 0;
}
static int A_unload(A *THIS,void *PARAM){
	printf("%s\n",__FUNCTION__);
	return 0;
}
static int B_reloadSt(B *THIS,char *name){
	printf("%s\n",__FUNCTION__);
	return 0;
}
static int B_unloadSt(B *THIS,void *PARAM){
	printf("%s\n",__FUNCTION__);
	return 0;
}
ASM_C0S0(A,B,A_reload,A_unload,B_reloadSt,B_unloadSt)


CLASS_EX(C,A){
	CLASS_ST_EX(D,B);
};
static int C_reload(C *THIS,char *name){
	printf("%s\n",__FUNCTION__);
	return 0;
}
static int C_unload(C *THIS,void *PARAM){
	printf("%s\n",__FUNCTION__);
	return 0;
}
static int D_reloadSt(D *THIS,char *name){
	printf("%s\n",__FUNCTION__);
	return 0;
}
static int D_unloadSt(D *THIS,void *PARAM){
	printf("%s\n",__FUNCTION__);
	return 0;
}
ASM_C1S1(C,D,A,B,C_reload,C_unload,D_reloadSt,D_unloadSt)



int main(){
	A *a;C *c,*c2;


	printf("\n*****************NEW C\n");
	c=NEW0(C);
	printf("\n*****************NEW C\n");
	c2=NEW0(C);
	printf("\n*****************DEL C\n");
	delC(&c,NULL);
	printf("\n*****************DEL C\n");
	DELETE0(c2);

	return 0;
}
